package cn.iutils.code.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.OutputStreamWriter;
import java.net.URL;

/**
 * 读取文本文件
 *
 * @author hc
 */
public class FileUtils {

	/**
	 * 读取文件
	 *
	 * @param path
	 * @return
	 * @throws Exception
	 */
	public static String readFile(String path) throws Exception {
		File file = new File(path);
		FileReader fileReader = new FileReader(file);
		BufferedReader bufferedReader = new BufferedReader(fileReader);
		StringBuffer stringBuffer = new StringBuffer();
		String str;
		str = bufferedReader.readLine();
		while (str != null) {
			stringBuffer.append(str);
			stringBuffer.append("\r\n");
			str = bufferedReader.readLine();
		}
		bufferedReader.close();
		fileReader.close();
		return stringBuffer.toString();
	}

	/**
	 * 保存文件
	 *
	 * @param path
	 * @throws Exception
	 */
	public static void saveFile(String path, String msg) throws Exception {
		FileOutputStream fos = new FileOutputStream(new File(path));
		OutputStreamWriter osw = new OutputStreamWriter(fos);
		osw.write(msg);
		osw.flush();
		osw.close();
	}

	/**
	 * 
	 * <p>Title: getClassPath</p>
	 * <p>Description: </p>
	 * @return 最后一位是分割符号，不用再加分割符号
	 */
	public static String getClassPath() {
		// 以URL形式获取工程的资源文件 classpath 路径, 得到以file:/为开头的URL
		// 例如返回: file:/D:/workspace/myproject01/WEB-INF/classes/
		URL classPath = Thread.currentThread().getContextClassLoader().getResource("");
		String proFilePath = classPath.toString();

		// 移除开通的file:/六个字符
		proFilePath = proFilePath.substring(6);

		// 如果为window系统下,则把路径中的路径分隔符替换为window系统的文件路径分隔符
		proFilePath = proFilePath.replace("/", java.io.File.separator);

		// 兼容处理最后一个字符是否为 window系统的文件路径分隔符,同时建立 properties 文件路径
		// 例如返回: D:\workspace\myproject01\WEB-INF\classes\config.properties
		if (!proFilePath.endsWith(java.io.File.separator)) {
			proFilePath = proFilePath + java.io.File.separator;
		} 
		return proFilePath;

	}
	/**
	 * 
	 * <p>Title: getRootPath</p>
	 * <p>Description: </p>
	 * @return 最后一位是分割符号，不用再加分割符号
	 */
	public static String getRootPath() {
		// 以URL形式获取工程的资源文件 root 路径, 得到以file:/为开头的URL
		// 例如返回: file:/D:/workspace/myproject01/
		URL classPath = Thread.currentThread().getContextClassLoader().getResource("../../");
		String proFilePath = classPath.toString();

		// 移除开通的file:/六个字符
		proFilePath = proFilePath.substring(6);

		// 如果为window系统下,则把路径中的路径分隔符替换为window系统的文件路径分隔符
		proFilePath = proFilePath.replace("/", java.io.File.separator);

		// 兼容处理最后一个字符是否为 window系统的文件路径分隔符,同时建立 properties 文件路径
		// 例如返回: D:\workspace\myproject01\
		if (!proFilePath.endsWith(java.io.File.separator)) {
			proFilePath = proFilePath + java.io.File.separator;
		} 
		return proFilePath;

	}
}
